package tedu.api.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

public class CollectionDemo {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add(new Point(1,2));
        c.add(new Point(3,4));
        c.add(new Point(5,6));
        c.add(new Point(7,8));
        c.add(new Point(1,2));
        //[元素1.toString(), 元素2.toString(), 元素3.toString(), ......]
        System.out.println(c);

        /*
        boolean contains(Object o)
        判断当前集合是否包含给定元素o
        判断依据是给定元素是否与当前集合元素存在equals()比较为true的情况
         */
        Point p = new Point(1,2);
        boolean flag = c.contains(p);
        System.out.println("是否包含"+flag);

        /*
        boolean remove(Object o)---------一般都不接收boolean结果
        从当前集合中删除与给定元素o的equals()比较为true的元素
        若存在重复元素则只删除一次
         */
        c.remove(p);
        System.out.println(c);

        /*System.out.println(c.remove(p));
        System.out.println(c);

        System.out.println(c.remove(p));
        System.out.println(c);*/

        //集合中存放的是元素的引用
        /*
        如果是将对象放入集合中，那么一个对象将不能存入两个集合中，
        且对象放入集合还会导致引用p1的地址值需要修改

        两个集合放入p1，p1修改，三个展示的值都被修改，
        表示p1,c1/c2添加的对象都是地址，在指向一个对象
         */
        Point p1 = new Point(100,200);
        Collection c1 = new ArrayList();
        Collection c2 = new ArrayList();
        c1.add(p1);//将p1的地址添加到c1中
        c2.add(p1);//将p1的地址添加到c2中
        System.out.println("p1"+p1);
        System.out.println("c1"+c1);
        System.out.println("c2"+c2);

        p1.setX(50);
        System.out.println("p1"+p1);
        System.out.println("c1"+c1);
        System.out.println("c2"+c2);








        /*
        boolean add()
        int size()
        boolean isEmpty()
        */
        /*Collection c = new ArrayList();
        c.add("one");
        c.add("two");
        c.add(3);//这里的3是Integer,触发了java的自动装箱
        c.add("four");
        c.add("five");
        //集合重写了Object的toString()方法，返回格式如下：
        //[元素1.toString(), 元素2.toString(), 元素3.toString(), .......]
        System.out.println(c);

        System.out.println("size:"+c.size());//5,输出集合的元素个数
        //isEmpty()判断集合是否为空集(size()为0表示空集)
        System.out.println("是否为空集："+c.isEmpty());//false

        c.clear();//清空集合
        System.out.println("集合清空");
        System.out.println(c);
        System.out.println("size:"+c.size());
        System.out.println("是否为空集："+c.isEmpty());*/



        //set是不可重复集合，且大部分实现类都是无序的(无序是针对使用者来说，实际set内部有自己的顺序逻辑，所以多次执行顺序也不会变)
        /*Collection c2 = new HashSet();
        c2.add("aaa");
        c2.add("bbb");
        c2.add("abc");
        c2.add("ddd");
        c2.add("ccc");
        System.out.println(c2);*/

    }
}
